package cn.okcode.slowjson.parser;

import cn.okcode.slowjson.ast.AbstractNode;

/**
 * json解析器接口
 *
 * @author pyk13
 */
public interface JsonParser {

    /**
     * 判断字符是否是json数组
     *
     * @return true-是json数组，false-不是json数组
     */
    boolean isArray();

    /**
     * 判断字符是否是json对象
     *
     * @return true-是json对象，false-不是json对象
     */
    boolean isObject();

    /**
     * 添加访问者，访问者会在直接完得到抽象语法树（即节点之后），进行传入根节点开始访问
     *
     * @param visitor 访问者
     */
    void addVisitor(Visitor visitor);

    AbstractNode<?> parse();
}
